package cn.tedu.csmall.cart.webapi.kafka;

import cn.tedu.csmall.commons.pojo.cart.vo.CartTbl;
import com.google.gson.Gson;
import org.apache.commons.lang.math.RandomUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.kafka.core.KafkaTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

//周期性向kafka发送消息
//Producer实例化对象需要保存到Spring容器中才能实现SpringBoot的周期调用
@Component
public class Producer {
    //KafkaTemplate<[主题的类型],[发送消息的类型]>
    @Autowired
    private KafkaTemplate<String,String> kafkaTemplate;

    int i=1;
    //每隔十秒发送一次--模拟增加购物车
    @Scheduled(fixedRate = 10000)
    public void sendMessage(){
        //实例化一个CartTbl对象，周期性发送该对象
        CartTbl cart = new CartTbl();
        cart.setId(i++);
        cart.setCommodityCode("PU201");
        cart.setPrice(RandomUtils.nextInt(200)+100);
        cart.setCount(RandomUtils.nextInt(10)+2);
        cart.setUserId("UU100");
        //利用Gson类型对象，将cart对象转换为json格式字符串
        Gson gson = new Gson();
        String json = gson.toJson(cart);
        System.out.println("本次发送的信息为："+json);
        //执行发送
        kafkaTemplate.send("myCart",json);
    }
}
